package van.planifolia.function;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by Intellij IDEA<br>
 *
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/11/3 18:36
 */
public class ListSort {
    public static void main(String[] args) {
        // 我们要实现对象自定义排序，可以直接使用Collections提供的排序方法
        List<Student> students = new ArrayList<>();
        students.add(new Student("zs",18));
        students.add(new Student("ls",12));
        students.add(new Student("ww",46));
        students.add(new Student("zl",9));
        // 我们根据数组中的对象的age属性进行排序，显然我们会发现这个sort中的参数即使函数式接口Comparator比较者
        students.sort(((o1, o2) -> o1.age - o2.age));
        // 我们再使用forEach方法来实现List的便利，当然我们点入forEach方法可以看出来这给方法需要的是一个Consumer 消费者
        students.forEach(student -> System.out.println(student));
    }
}
class Student{
    String name;
    Integer age;

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}